/**
 * 
 */
package com.thor.palmmall.rest.elecharges;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.thor.commons.entity.BeanOperateInfo;
import com.thor.commons.exception.ThorServiceException;
import com.thor.commons.query.QueryResult;
import com.thor.palmmall.api.elecharges.EleChargesBill;
import com.thor.palmmall.api.elecharges.PayChargesParam;
import com.thor.palmmall.api.elecharges.UserEleDate;

/**
 * @author NuoSa
 *
 * @since 1.0
 */
@Path("/eleCharges")
@Produces(MediaType.APPLICATION_JSON + "; charset=utf-8")
@Consumes(MediaType.APPLICATION_JSON + "; charset=utf-8")
public interface AEleChargesBillService {
  @POST
  @Path(value = "/create")
  public APayMent createChargesBill(EleChargesBill4Create chargesBill,
      @QueryParam("") BeanOperateInfo operInfo) throws ThorServiceException;

  @GET
  @Path(value = "/getEleData/{userNumber}")
  public UserEleDate getUserEleDate(@PathParam("userNumber") String userNumber)
      throws ThorServiceException;

  /**
   * 查询电表的历史数据及倍率信息
   * 
   * @param param
   *          查询参数
   * @return
   * @throws ThorServiceException
   */
  @POST
  @Path(value = "/queryFreezeDataAndCT")
  public UserEleDate queryFreezeDataAndCT(QueryHstEleDataParam param) throws ThorServiceException;

  @POST
  @Path(value = "/query")
  public QueryResult<EleChargesBill> query(EleChargesBillCondition condition);

  @GET
  @Path(value = "/pay")
  public APayMent payChargesBill(PayChargesParam param, @QueryParam("") BeanOperateInfo operInfo)
      throws ThorServiceException;

  @GET
  @Path(value = "/getByBillNumber/{billNumber}")
  public EleChargesBill getByBillNumber(@PathParam("billNumber") String billNumber);

  @GET
  @Path(value = "/paynotify/{billNumber}")
  public void paynotify(@PathParam("billNumber") String billNumber,
      @QueryParam("state") String state, @QueryParam("") BeanOperateInfo operInfo)
          throws ThorServiceException;

}